#!/usr/bin/env node

// Node CLI 应用入口文件必须要有这样的文件头

// 作用：提取当前目录下的指定格式文件到当前目录下的_temp文件夹

console.log('obtainning files cli working')
const inquirer = require('inquirer')
const fs = require('fs')
const path = require('path')

// 文件类型列表
const choices = [
  '.txt',
  '.png',
  '.jpg',
  '.md',
  '.xmind'
]

// 读取当前目录下的文件
const readDir = (entry, outputDir, fileType) => {
  const dirInfo = fs.readdirSync(entry)
  dirInfo.forEach(item => {
    const location = path.join(entry, item)
    const info = fs.statSync(location)
    if (info.isDirectory()) {
      readDir(location, outputDir, fileType)
    } else {
      if (item.includes(fileType)) {
        fs.copyFile(location, path.join(outputDir, item), function (err) {
          if (err) {
            console.log(err)
          }
        })
      }
    }
  })
}

inquirer.prompt([
  {
    type: 'list',
    name: 'type',
    message: '请选择需要提取的文件类型',
    choices
  }
])
  .then(answer => {
    // 目标目录
    const targetDir = process.cwd()

    // 输出目录
    const outputDir = path.join(targetDir, '_temp')
    if (!fs.existsSync(outputDir)) {
      fs.mkdirSync(outputDir)
    } else {
      fs.unlinkSync(outputDir)
    }

    readDir(targetDir, outputDir, answer.type)
  })
